/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sdc.strategyfactory;

import sdc.strategy.allocation.AllocateStrategy;
import sdc.strategy.allocation.RandomAllocateStrategy;
import sdc.strategy.construction.ConstructStrategy;
import sdc.strategy.construction.EvenConstructStrategy;

/**
 *
 * @author yokoe
 */
public class DefaultStrategy implements Strategy
{

	/**
	 * Belows are for Singleton Pattern.
	 */
	public static final DefaultStrategy INSTANCE = new DefaultStrategy();

	@Override
	public int getLLD()
	{
		return 2;
	}

	@Override
	public double getOmega()
	{
		return 1.0;
	}

	@Override
	public int getPrimaryComponentNum()
	{
		return 3;
	}

	@Override
	public int getCandidateNumForUseComponent()
	{
		return 5;
	}

	@Override
	public double getPartialForDelegation() {
		return 0.5;
	}



	@Override
	public double getThresholdForSatulateRemove() {
		return 0.06;
	}

	@Override
	public double getThresholdForNormalRemove() {
		return 0.03;
	}


	@Override
	public AllocateStrategy getStrategyForAllocation()
	{
		return new RandomAllocateStrategy();
	}

	@Override
	public ConstructStrategy getStrategyForOverlayConstruction()
	{
		return new EvenConstructStrategy();
	}

}
